//-----------------------------------------------------------------------
// <copyright file="Guest.cs" company="tuliprules.org">
//     Copyright (c) 2012 tuplelister, tuliprules.org.
// </copyright>
// <summary>This is the Guest class.</summary>
//-----------------------------------------------------------------------

namespace Tulip.Rules.Benchmark.Manners.Types
{
    /// <summary>
    /// Miss Mannners - Guest class
    /// </summary>
    public class Guest
    {
        /// <summary>
        /// Name of guest.
        /// </summary>
        private string name;

        /// <summary>
        /// Gender of guest.
        /// </summary>
        private string sex;

        /// <summary>
        /// Hobby of guest.
        /// </summary>
        private string hobby;

        /// <summary>
        /// Initializes a new instance of the <see cref="Guest"/> class. 
        /// </summary>
        public Guest()
        {
            // Do nothing here
            return;
        }

        /// <summary>
        /// Initializes a new instance of the <see cref="Guest"/> class. 
        /// </summary>
        /// <param name="name">
        /// Name of guest.
        /// </param>
        /// <param name="sex">
        /// Gender of guest.
        /// </param>
        /// <param name="hobby">
        /// Hobby of guest.
        /// </param>
        public Guest(string name, string sex, string hobby)
        {
            this.name = name;
            this.sex = sex;
            this.hobby = hobby;
        }

        /// <summary>
        /// Gets or sets the name of guest.
        /// </summary>
        public string Name
        {
            get
            {
                return this.name;
            }

            set
            {
                this.name = value;
            }
        }

        /// <summary>
        /// Gets or sets the gender of guest.
        /// </summary>
        public string Sex
        {
            get
            {
                return this.sex;
            }

            set
            {
                this.sex = value;
            }
        }

        /// <summary>
        /// Gets or sets the hobby of guest.
        /// </summary>
        public string Hobby
        {
            get
            {
                return this.hobby;
            }

            set
            {
                this.hobby = value;
            }
        }

        /// <summary>
        /// Returns a text representation of the Guest object.
        /// </summary>
        /// <returns>
        /// A text representation of the Guest object.
        /// </returns>
        public override string ToString()
        {
            return string.Format("(guest (name {0}) (sex {1}) (hobby {2}))", this.name, this.sex, this.hobby);
        }
    }
}
